//std:atomic`是 C++11 标准库中的一个模板类，用于实现多线程环境下的原子操作。
// 它提供了一种线程安全的方式来访问和修改共享变量，可以避免多线程环境中的数据竞争问题。
//它的操作是原子性的。也就是说在多线程环境下，多个线程同时对同一个`std::atomic`变量进行操作时，不会出现数据竞争问题。
//类似于互斥量的作用


#include<iostream>
#include<thread>
#include<mutex>
#include<atomic>	//原子操作头文件

std::atomic<int> shared_data = 0;

void func()
{
	for (int i = 0; i < 10000; i++)
	{
		shared_data++;	//自带一个线程访问安全
	}
}

int main()
{
	std::thread t1(func);
	std::thread t2(func);

	t1.join();
	t2.join();
	std::cout << "shared_data = " << shared_data << std::endl;
	return 0;
}
//原子操作比手动上锁解锁效率更高一些
/*
执行结果为:
shared_data = 20000
*/












